/**
    Copyright (C) 2012 Guido Ludwig

    This file is part of JATT.
	http://code.google.com/p/jatt/

    JATT is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package de.guidoludwig.jatt;

import java.math.BigDecimal;

import com.jgoodies.binding.beans.Model;

/**
 * @author Guido Ludwig
 */
public class ImagePreferences extends Model {

	public static final String PROPERTY_SIZE_VARIANCE = "sizeVariance";

	private static final long serialVersionUID = -7486804903719389273L;

	public static final String PROPERTY_MAXIMUM_SIZE = "maximumSize";
	public static final String PROPERTY_PREFERRED_WIDTH = "preferredWidth";

	private int preferredWidth;
	private long maximumSize;
	private BigDecimal sizeVariance;

	public ImagePreferences() {
		sizeVariance = BigDecimal.ZERO;
	}

	public int getPreferredWidth() {
		return preferredWidth;
	}

	public void setPreferredWidth(int newPreferredWidth) {
		int oldPreferredWidth = getPreferredWidth();
		preferredWidth = newPreferredWidth;
		firePropertyChange(PROPERTY_PREFERRED_WIDTH, oldPreferredWidth,
				preferredWidth);
	}

	public long getMaximumSize() {
		return maximumSize;
	}

	public void setMaximumSize(long newMaximumSize) {
		long oldMaximumSize = getMaximumSize();
		maximumSize = newMaximumSize;
		firePropertyChange(PROPERTY_MAXIMUM_SIZE, oldMaximumSize, maximumSize);
	}

	public boolean compress() {
		return maximumSize != 0;
	}

	public BigDecimal getSizeVariance() {
		return sizeVariance;
	}

	public void setSizeVariance(BigDecimal newSizeVariance) {
		BigDecimal oldSizeVariance = getSizeVariance();
		sizeVariance = newSizeVariance;
		firePropertyChange(PROPERTY_SIZE_VARIANCE, oldSizeVariance,
				sizeVariance);
	}

}
